import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# Prewitt算子
prewitt_x = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]])
prewitt_y = np.array([[-1, -1, -1], [0, 0, 0], [1, 1, 1]])

# 应用Prewitt算子
prewitt_x_edges = cv2.filter2D(image, -1, prewitt_x)
prewitt_y_edges = cv2.filter2D(image, -1, prewitt_y)

# 计算梯度幅值
prewitt_magnitude = np.sqrt(prewitt_x_edges**2 + prewitt_y_edges**2)
prewitt_magnitude = np.uint8(prewitt_magnitude)

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Prewitt Edge Detection', prewitt_magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()